// pages/category/category.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    value: '',
    active: 0, // 当前激活的分类索引
    id: '', // 父分类ID
    list: [],
    list1: [],
    name: '', // 当前分类名称
    desc: '', // 当前分类描述
    page: 1, // 当前页码
    limit: 10, // 每页显示条数
    total: 0, // 总商品条数
    totalPages: 0, // 总页数（根据total和limit计算）
    loading: false // 加载状态（防止重复请求）
  },

  /**
   * 获取分类列表
   */
  getList() {
    wx.request({
      url: 'http://admin.bsmall.byesame.com/wx/goods/category',
      data: {
        id: this.data.id,
      },
      method: "GET",
      success: (res) => {
        if (res.data.errno === 0) {
          this.setData({
            list: res.data.data.brotherCategory
          }, () => {
            // 确保分类列表加载完成后，加载当前激活分类的商品
            this.loadGoodsByCategory(this.data.active);
          });
        } else {
          wx.showToast({
            title: '分类加载失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.log('获取分类失败:', err);
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        });
      }
    })
  },

  /**
   * 根据分类加载商品
   * @param {number} index - 分类索引
   * @param {function} callback - 回调函数（用于下拉刷新结束）
   */
  loadGoodsByCategory(index, callback) {
    // 若分类列表为空，直接结束
    if (!this.data.list.length) {
      callback && callback();
      return;
    }

    // 防止重复请求
    if (this.data.loading) {
      callback && callback();
      return;
    }

    // 设置加载中状态
    this.setData({
      loading: true
    });

    // 获取当前分类ID
    const currentId = this.data.list[index].id;

    wx.request({
      url: 'http://admin.bsmall.byesame.com/wx/goods/list',
      data: {
        categoryId: currentId,
        page: this.data.page,
        limit: this.data.limit
      },
      method: "GET",
      success: (res) => {
        if (res.data.errno === 0) {
          const {
            list: goods,
            filterlist,
            total
          } = res.data.data;
          const totalPages = Math.ceil(total / this.data.limit);
          const newlist1 = this.data.page === 1 ? goods : this.data.list1.concat(goods);
          // 修复循环逻辑：循环条件、变量引用和数组访问
          for (let a = 0; a < this.data.list.length; a++) {
            if (currentId === this.data.list[a].id) {
              this.setData({
                name: this.data.list[a].name,
                desc: this.data.list[a].desc
              });
              break; // 找到对应分类后跳出循环，优化性能
            }
          }
          this.setData({
            list1: newlist1,
            total: total,
            totalPages: totalPages
          });
        }

      },
      fail: (err) => {
        console.log('获取商品列表失败:', err);
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        });
      },
      complete: () => {
        // 无论成功失败，都结束加载状态
        this.setData({
          loading: false
        });
        // 执行回调（如下拉刷新停止动画）
        callback && callback();
      }
    })
  },


  /**
   * 分类切换事件
   * @param {object} event - 事件对象
   */
  onChange(event) {
    const currentIndex = event.detail.index;
    // 切换分类时重置页码为1，重新加载第一页数据
    this.setData({
      active: currentIndex,
      page: 1
    }, () => {
      this.loadGoodsByCategory(currentIndex);
    });
  },
  aaa(e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/shoppingcart/shoppingcart?id=${id}`,
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    try {
      // 解析父分类ID（参数可能是字符串，无需JSON.parse，直接解码即可）
      const id = decodeURIComponent(options.id || '');
      this.setData({
        id
      });

      // 解析默认激活的分类索引（默认0）
      const activeIndex = parseInt(decodeURIComponent(options.index || '0'), 10) || 0;
      this.setData({
        active: activeIndex
      });

      // 加载分类列表
      this.getList();
    } catch (e) {
      console.log('参数解析错误:', e);
      // 异常时使用默认值
      this.setData({
        id: '',
        active: 0
      });
      this.getList();
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作（下拉刷新）
   */
  onPullDownRefresh() {
    // 下拉刷新时重置页码为1，重新加载当前分类的第一页数据
    this.setData({
      page: 1
    }, () => {
      this.loadGoodsByCategory(this.data.active, () => {
        // 数据加载完成后，停止下拉刷新动画
        wx.stopPullDownRefresh();
      });
    });
  },

  /**
   * 页面上拉触底事件的处理函数（加载更多）
   */
  onReachBottom() {
    // 若正在加载或已无更多数据，直接返回
    if (this.data.loading || this.data.page >= this.data.totalPages) {
      return;
    }

    // 页码+1，加载下一页
    this.setData({
      page: this.data.page + 1
    }, () => {
      // 传递当前激活的分类索引，加载下一页数据
      this.loadGoodsByCategory(this.data.active);
    });
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: this.data.name || '商品分类',
      path: `/pages/category/category?id=${this.data.id}&index=${this.data.active}`
    };
  }
})